// 创建一个名为'sync-update'的广播通道
const channel = new BroadcastChannel('sync-update')

// 定义消息类型
type IMsgType = 'add-imp' | 'update-imp'

/**
 * 发送消息的函数
 * @param type 消息类型
 * @param msg 消息
 */
export function sendMsg(type: IMsgType, msg: any) {
  // 向广播通道发送消息
  channel.postMessage({ type, msg })
}

/**
 * 监听消息的函数
 * @param callback 回调函数
 * @returns
 */
export function listenMsg(callback: any) {
  // 定义消息处理函数
  const handler = (e: MessageEvent) => {
    // 如果有回调函数，则执行回调函数
    callback && callback(e.data)
  }
  // 监听广播通道的消息事件
  channel.addEventListener('message', handler)
  // 返回一个函数，用于移除消息事件监听
  return () => {
    channel.removeEventListener('message', handler)
  }
}
